<?php

class AdmRegistro extends TPage {

    public function onLoad($param) {
        parent::onLoad($param);
        if (!$this->IsPostBack) {
            $this->actualizarIntefaz();
        }
    }

    private function actualizarIntefaz() {
        $arr = $this->obtenerDatos();
        $this->iniciarControles($arr);
        $this->mostrarMensaje();
    }

    private function obtenerDatos() {
        $arg = $this->Request["a"];
        if (!Util::isNullOrEmpty($arg)) {
            $id = Util::desencriptarUrl($arg, "id");
            $this->setViewState("id", $id);
            $oNoticiaBLL = new NoticiaBLL();
            $arr = $oNoticiaBLL->obtenerPorId($id);
        } else {
            $this->setViewState("id", "-1");
            $arr = array();
        }

        return $arr;
    }

    private function iniciarControles($arr) {
        $id = $this->getViewState("id");

        if (count($arr) > 0) {
            $oNoticia = new NoticiaClass();
            $oNoticia = $arr;

            $strUsuario = $oNoticia->getUsuario();
            $strFecha = $oNoticia->getFecha();
            $strTitulo = $oNoticia->getTitulo();
            $strMensaje = $oNoticia->getMensaje();
            $intIdEstado = $oNoticia->getIdEstado();
            $strSrc = $oNoticia->getSrc();
        } else {
            $strUsuario = "";
            $strFecha = "";
            $strTitulo = "";
            $strMensaje = "";
            $intIdEstado = Combo::VALOR_SELECCIONE;
            $strSrc = "";
        }

        //formatea valores
        $strFecha = Util::isDatetimeEmpty($strFecha, "");
        if (!Util::isNullOrEmpty($strFecha)) {
            $strFecha = Util::fechaDateTimeANormal($strFecha);
        }

        $json = array(
            "id" => $id,
            "nombreContenedor" => $this->lblImagen->ClientID,
            "urlAjax" => "Noticia.Ajax",
            "opcionAjax" => "EliminarImagen",
            "src" => $strSrc,
            "path" => Util::obtenerPathRecursoEscortPorTipoRecurso($this->Page, "NOTICIA"),
            "pathThumbs" => Util::obtenerPathRecursoEscortPorTipoRecurso($this->Page, "NOTICIA_THUMBS"),
            "themeBaseUrl" => $this->Page->Theme->BaseUrl,
        );
        $json = json_encode($json);
        $funcionEliminar = "eliminarImagen(" . $json . ");";

        $this->ltTitulo->Text = (($id == "-1") ? "Nueva" : "Modificar") . " Noticia";
        $this->lblUsuario->Text = $strUsuario;
        $this->lblFecha->Text = $strFecha;
        $this->txtTitulo->Text = $strTitulo;
        $this->htmlArea->Text = $strMensaje;
        $this->ddlEstado->asignarSelectedValue($intIdEstado);
        $this->lblImagen->Text = Util::dibujarImagenPrettyPhoto($this->Page, $strSrc, "NOTICIA", $funcionEliminar);
        $this->pnlCreadoPor->Visible = ($id == "-1") ? false : true;
        $this->pnlImagen->Visible = ($id == "-1") ? false : true;

        $arrEliminar = array(
            "idRegistro" => $id,
            "urlAjax" => "Noticia.Ajax",
            "opcionAjax" => "Eliminar",
            "urlRespuesta" => "Noticia.AdmListar",
            "parametrosUrlRespuesta" => ""
        );
        $opcionesEliminar = Util::jsonOpcionesEliminar($arrEliminar);
        $this->btnEliminar->Visible = ($id == "-1") ? false : true;
        $this->btnEliminar->Attributes->Add("onclick", "eliminarRegistro(" . $opcionesEliminar . ")");
        $this->btnVolver->NavigateUrl = "index.php?page=Noticia.AdmListar";
    }

    private function mostrarMensaje() {
        $arg = $this->Request["a"];
        if (!Util::isNullOrEmpty($arg)) {
            $tipoMensaje = Util::desencriptarUrl($arg, "tipoMensaje");
            $mensaje = Util::desencriptarUrl($arg, "mensaje");

            if (!Util::isNullOrEmpty($mensaje)) {
                Util::mostrarMsj($this->Page, "da-ex-val-error", $mensaje, $tipoMensaje);
            }
        }
    }

    private function grabarImagen($id) {
        $idTipoRecurso = Tipo_recurso::IMAGEN;
        $objFileUpload = $this->fuArchivo;

        if ($objFileUpload->HasFile) {
            $nombreArchivo = $objFileUpload->FileName;
            $nombreArchivo = Util::obtenerNombreUnicoArchivo(Util::reemplazarCaracteresEspeciales($nombreArchivo));

            $contentType = $objFileUpload->FileType;
            $tamano = $objFileUpload->FileSize;

            $oNoticia = new NoticiaClass();
            $oNoticiaBLL = new NoticiaBLL();

            $oNoticia->setId($id);
            $oNoticia->setSrc($nombreArchivo);
            $resultado = $oNoticiaBLL->grabarImagen($oNoticia);

            $path = Util::obtenerPathRecursoEscortPorTipoRecurso($this->Page, "NOTICIA");
            $path = str_replace($this->Page->Theme->BaseUrl, "", $path);
            $path = str_replace("/", DIRECTORY_SEPARATOR, $path);
            $directorioAplicacion = Util::obtenerDirectorioBaseAplicacion();
            $path = $directorioAplicacion . "themes" . DIRECTORY_SEPARATOR . "user" . $path;

            //copia el archivo al directorio destino
            $rutaImagen = $path . $nombreArchivo;
            $objFileUpload->saveAs($rutaImagen);
            Util::crearThumbs($nombreArchivo, $rutaImagen, $contentType, "NOTICIA_THUMBS");
            Util::redimensionarImagenRecursoEscort($rutaImagen, "NOTICIA");
        }
    }

    public function btnGrabarClick($sender, $param) {
        $mensaje = "";
        $tipoMensaje = "";
        $id = $this->getViewState("id");
        $oUsuario = Util::getSession("USUARIO");
        $oNoticia = new NoticiaClass();
        $oNoticiaBLL = new NoticiaBLL();

        if ($id != -1) {
            $arr = $oNoticiaBLL->obtenerPorId($id);
            $oNoticia = $arr;
        }

        $oNoticia->setId($id);
        $oNoticia->setTitulo($this->txtTitulo->Text);
        $oNoticia->setMensaje($this->htmlArea->Text);
        $oNoticia->setIdEstado($this->ddlEstado->obtenerSelectedValue());

        if ($id == "-1") {
            $oNoticia->setIdUsuario($oUsuario->getId());
            $resultado = $oNoticiaBLL->grabar($oNoticia);
            if (is_numeric($resultado)) {
                $id = $resultado;
            }
        } else {
            $resultado = $oNoticiaBLL->editar($oNoticia);
        }

        $this->grabarImagen($id);

        if (!Util::isNullOrEmpty($resultado) && !is_numeric($resultado)) {
            $tipoMensaje = Util::MENSAJE_ERROR;
            $mensaje = $resultado;
        } else {
            $tipoMensaje = Util::MENSAJE_OK;
            $mensaje = "El registro fue grabado con &eacute;xito";
        }

        $arg = Util::encriptarUrl(array(
                    "id" => $id,
                    "tipoMensaje" => $tipoMensaje,
                    "mensaje" => $mensaje
                        )
        );
        $this->Response->Redirect("index.php?page=Noticia.AdmRegistro&a=" . $arg);
    }

}

?>
